package mymyoux.io.mserveur
{
	import mymyoux.events.MEventDispatcher;
	import mymyoux.io.AMFPHP;
	import mymyoux.io.mserveur.mcontactClasses.MLogins;
	import mymyoux.io.mserveur.mcontactClasses.People;
	import mymyoux.io.mserveur.mcontactClasses.events.MLoginsEvent;
	
		 /**
         * MContacts dispatche cet évènement lorsqu'un login a été associé à un idx.
         * @eventType mymyoux.io.mserveur.mcontactClasses.events.MLoginsEvent
         */
        [Event(name="new_login", type="mymyoux.io.mserveur.mcontactClasses.events.MLoginsEvent")]
        
/**
 * Gère la liste de contact d'un MAdvBinSocket.
 * <p><b>N'est normalement pas utilisé directement.</b></p>
 */
	public class MContacts extends MEventDispatcher
	{
		/**
		 * Traduit chaque idx en pseudonyme.
		 */
		protected var logins:MLogins;
		/**
		 * Permet le dialogue avec le serveur PHP (est transmis à MLogins)
		 */
		protected var amfphp:AMFPHP;
		/**
		 * Crée un élément MContacts qui gère la liste de contacts d'un MAdvBinSocket.
		 */
		public function MContacts(amfphp:AMFPHP)
		{
			logins=new MLogins(amfphp);
			logins.addEventListener(MLoginsEvent.NEW_LOGIN,onLogin);
			this.amfphp=amfphp;
		}
		/**
		 * Rajoute une personne dans la liste de contact grâce à son idx.
		 * Il appel MLogins.addIdx qui va se charger de récupérer les Pseudonymes manquants sur le serveur PHP.
		 * @param idx Suite d'idx à rajouter ou un tableau dont l'index 0 est la suite d'idx à rajouter.
		 * @see mymyoux.io.mserveur.mcontactClasses.MLogins#addIdx()
		 */
		public function addPeople(...idx):void{
			if(idx.length>0)
			{
				//soit idx est juste une liste d'idx soit c'est un tableau avec une case unique contenant la suite d'idx
				if(idx.length==1 && idx[0] is Array)
				{
					(logins.addIdx as Function).apply(this,idx[0]);
				}else
				{
					logins.addIdx(idx);
				}
				
			}
		}
		/**
		 * @copy mymyoux.io.mserveur.mcontactClasses.Mogins#hasLogin()
		 */
		 public function hasPeople(idx:uint):Boolean
		 {
		 	return logins.hasLogin(idx);
		 }
		/**
		 * @copy mymyoux.io.mserveur.mcontactClasses.Mogins#getPeople()
		 */
		 public function getPeople(idx:uint):People
		 {
		 	return logins.getPeople(idx);
		 }
		/**
		 * Appelée lorsqu'un nouveau pseudonyme a été récupéré.
		 */
		protected function onLogin(event:MLoginsEvent):void
		{
			this.dispatchEvent(event.clone());
			
		}
		
	}
}